#ifdef __EZQUEUEH__
#define WARNING__REDEFINE
#endif
#ifndef __EZQUEUEH__
#define __EZQUEUEH__

#include <queue>
using std::queue;
#if 0
typedef short Action_t;
template <typename T> struct QNode;
template <typename T> class Queue
{

  public:
    Queue();
    Queue(T *item_ptr);
    ~Queue();
    bool isEmpty() const;
    Action_t Enqueue(T *item_ptr);
    Action_t Enqueue(const T &item);
    Action_t Dequeue(T *ret_item);
    T& Dequeue() const;
    T &getHead(); 
    T &getTail();
    int getcount() const;

  private:
    struct QNode
    {
        T *data;
        QNode *back;
        //bool deleted;
        QNode(T *_data) : data(_data), back(nullptr){}
        QNode(const T &_data) : data(&_data), back(nullptr){}
        QNode() : data((T)(nullptr)), back((T)(nullptr)){}
    };
    QNode *Head;
    QNode *Tail;
    int count;
};
#endif
#endif